#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//#include<math.h>
//int main()
//{
//	int n = 0;
//	int m = 0;
//	scanf("%d%d", &m, &n);
//	int count = 0;
//	int t = m;
//	int i = 2;
//	for (t = m; t <= n; t++)
//	{
//		for (i = 2; i <= sqrt(t); i++)
//		{
//			if (t % i == 0)
//				break;
//			else
//				count++;
//		}
//	}
//	printf("%d", count);
//	return 0;
//}
//#include<stdio.h>
//int sum(int n)
//{
//    int i = 0;
//    while (n > 0)
//    {
//        if (n % 2 != 0)
//        {
//            i = i + n;
//        }
//        n--;
//    }
//    return i;
//}
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int ret = sum(n);
//    printf("%d", ret);
//    return 0;
//}
//#include<stdio.h>
//int main()
//{
//    float arr[6] = { 0 };
//    int i = 0;
//    double sum = 0;
//    for (i = 0; i < 6; i++)
//    {
//        scanf("%f", &arr[i]);
//        sum += arr[i];
//    }
//    double avg = sum / 6;
//    printf("avg=%lf", avg);
//    return 0;
//}
//#include<stdio.h>
//#include<string.h>
//int main()
//{
//    int a[10] = { 12,17,20,25,28,30 };
//    int n = 0;
//    scanf("%d", &n);
//    int i = 0;
//    int j = 5;
//    int ret = 0;
//    for (i = 0; i < 7; i++)
//    {
//        if (n < a[i])
//        {
//            ret = 1;
//            memmove(&a[i + 1], &a[i],((j-i)+1) * sizeof(int));
//            a[i] = n;
//            break;
//        }
//    }
//    if (ret == 0)
//        a[i-1] = n;
//    for (i = 0; i < 7; i++)
//    {
//        printf("%d ", a[i]);
//    }
//    return 0;
//}
//#include<stdio.h>
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int arr[5] = { 0 };
//    int i = 0;
//    while (n)
//    {
//        arr[i] = n % 10;
//        n = n / 10;
//        i++;
//    }
//    for (i = 4; i >= 0; i--)
//    {
//        if (i == 0)
//            printf("%d", arr[i]);
//        else
//            printf("%d*", arr[i]);
//    }
//    return 0;
//}
//#include<stdio.h>
//int fac(int n)
//{
//    int sum = 1;
//    while (n)
//    {
//        sum *= n;
//        n--;
//    }
//    return sum;
//}
//int main()
//{
//    int m = 0;
//    int k = 0;
//    scanf("%d%d", &m, &k);
//    int ret = fac(m);
//    int count = fac(k);
//    int l = fac(m - k);
//    int p = ret / (count * l);
//    printf("%d", p);
//    return 0;
//}
#include<stdio.h>
#include<math.h>
int prime(int n)
{
    int i = 2;
    int t = (int)sqrt(n);
    int ret = 0;
    while (i <= t)
    {
        if (n % i == 0)
            ret = 1;
        i++;
    }
    if (ret == 0)
        return 1;
    else
        return 0;
}
int reverse(int n)
{
    int count = 0;
    int t = n;
    int sum = 0;
    while (t)
    {
        t = t / 10;
        count++;
    }
    while (n)
    {
        sum = sum + (n % 10) *((int) pow(10, count - 1));
        n = n / 10;
        count--;
    }
    return sum;
}
int main()
{
    int n = 0;
    scanf("%d", &n);
    int tag = prime(n);
    if (tag == 0)
    {
        printf("no");
        return;
    }
    int ret = reverse(n);
    tag = prime(ret);
    if (tag == 1)
        printf("yes");
    else
        printf("no");
    return 0;
}